package com.feeling.oafeeling.config;


import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;

import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

/**
 * Swagger使用的配置文件
 */
@Configuration // 标明是配置类
@EnableSwagger2 //开启旧版本swagger功能 ：http://localhost:8080/swagger-ui.html
public class SwaggerConfig {

    /**
     * apiInfo：api基本信息的配置，用于定义API主界面的信息，比如可以声明所有的API的总标题、描述、版本
     */
    private ApiInfo apiInfo() {

        return new ApiInfoBuilder()
                .title("OA审核系统API文档")//可以用来自定义API的主标题
                .description("OA审核系统系统相关接口的文档")//可以用来描述整体的API
                .termsOfServiceUrl("http://localhost:9999/")//服务条款网址
                .version("1.0")//版本
                .contact(new Contact("ov-feeling", "https://gitee.com/ccYxp/oa-feeling", "作者Email"))
                .build();
    }

    @Bean
    public Docket createRestApi() {
        return new Docket(DocumentationType.SWAGGER_2)  // DocumentationType.SWAGGER_2 固定的，代表swagger2
//                .groupName("分布式任务系统") // 如果配置多个文档的时候，那么需要配置groupName来分组标识
                .apiInfo(apiInfo()) // 用于生成API信息
                .select() // select()函数返回一个ApiSelectorBuilder实例,用来控制接口被swagger做成文档
                .apis(RequestHandlerSelectors.basePackage("com.feeling.oafeeling.controller")) // 用于指定扫描哪个包下的接口
                .paths(PathSelectors.any())// 选择所有的API,如果你想只为部分API生成文档，可以配置这里
                .build();
    }


}

